package com.topfun.utils;


/**
 * 常量类
 * huangda
 */
public class Constants {
    // ===========================================================
    // Constants
    // ===========================================================
    private static final CycleCounter counter = new CycleCounter(10000);
    /**
     * 微信公众号AppID
     */
    public static final String WeChat_App_ID;

    /**
     * 微信公众号AppSecret
     */
    public static final String WeChat_App_Secret;
    /**
     * 微信公众号支付商户id
     */
    public static final String Wechat_Mch_Id;
    /**
     * 微信公众号支付商户秘钥
     */
    public static final String WeChat_Mch_Secret;
    /**
     * 微信公众号支付回调url
     */
    public static final String Payment_Notify_URL_Wechat;


    static {
        /*WeChat_App_ID = "wx190207bbc6d90b9e";
        WeChat_App_Secret = "b1123c7d78e537f75fc833a525876c48";*/
        WeChat_App_ID = "wx470467dbe5ed03bf";
        WeChat_App_Secret = "3e37993a3763fcd5c335e1ff5159a4fa";
        Wechat_Mch_Id = "1487268842";
        WeChat_Mch_Secret = "tiantianyouxiyule123tiantianyoux";
        Payment_Notify_URL_Wechat = "http://www.tuiclubs.com/topfun/payment/notify";
    }
    // ===========================================================
    // Fields
    // ===========================================================


    // ===========================================================
    // Constructors
    // ===========================================================

    // ===========================================================
    // Getter &amp; Setter
    // ===========================================================


    // ===========================================================
    // Methods for/from SuperClass/Interfaces
    // ===========================================================


    // ===========================================================
    // Methods
    // ===========================================================

    /**
     * <br/> 生成订单ID
     * <br/> 15位数字字符串，前10位为时间戳(秒)，后5位为循环自增量
     * <br/>
     * <br/> 理论上，在每秒超过10万订单申请时才会出现重复ID
     * <br/>
     *
     * @return 订单
     */
    public static long generateOrderID() {
        return Long.parseLong(String.format("%d%d%04d",
                System.currentTimeMillis() / 1000,
                ConfigLoadUtil.isDebug()?0:1,
                counter.incrementAndGet()));
    }
    // ===========================================================
    // Inner and Anonymous Classes
    // ===========================================================
    private final static class CycleCounter {
        private final int max;
        private       int count;

        CycleCounter(int max) {
            if (max < 1) { throw new IllegalArgumentException(); }

            this.max = max;
        }

        @SuppressWarnings("unused")
        public synchronized int get() {
            return count;
        }

        synchronized int incrementAndGet() {
            count = (count + 1) % max;
            return count;
        }
    }
}
